﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entities_Layer;
using System.Collections;
using System.Transactions;
using System.Data.SqlClient;
using System.Data;


namespace DAL.Repositories
{
    public class ProgramaEspecialRepository : IRepository<ProgramaEspacial>
    {


            private List<IEntity> _insertItems;
            private List<IEntity> _updateItems;

            public ProgramaEspecialRepository()
            {
                _insertItems = new List<IEntity>();

            }

            public void Insert(ProgramaEspacial entity)
            {
                _insertItems.Add(entity);
            }

            public void Update(ProgramaEspacial entity)
            {
                _updateItems.Add(entity);
            }


            public IEnumerable<ProgramaEspacial> GetAll()
            {


                List<ProgramaEspacial> listaProgramas = null;

                SqlCommand cmd = new SqlCommand();
                DataSet ds = DBAccess.ExecuteSPWithDS(ref cmd, "pa_listar_programas_espaciales");



                if (ds.Tables[0].Rows.Count > 0)
                {
                    listaProgramas = new List<ProgramaEspacial>();

                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        listaProgramas.Add(new ProgramaEspacial
                        {
                            Nombreprogramas = dr["nombre"].ToString(),
                           FechaInicio = dr["tipo"].ToString(),
                            FechaFinalizacion = dr["tipo"].ToString(),
                            Alcanze = dr["tipo"].ToString()
                           
                        });
                    }
                }

                return listaProgramas;
            }


            public void Save()
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        if (_insertItems.Count > 0)
                        {
                            foreach (Planeta objPlaneta in _insertItems)
                            {
                                InsertPlaneta(objPlaneta);
                            }
                        }

                        scope.Complete();
                    }
                    catch (TransactionAbortedException ex)
                    {

                    }
                    catch (ApplicationException ex)
                    {

                    }
                    finally
                    {
                        Clear();
                    }

                }
            }


            public void Clear()
            {
                _insertItems.Clear();

            }

            private void InsertPlaneta(Planeta objPlaneta)
            {

                try
                {
                    SqlCommand cmd = new SqlCommand();

                    cmd.Parameters.Add(new SqlParameter("@nombre", objPlaneta.Nombre));
                    cmd.Parameters.Add(new SqlParameter("@tipo", objPlaneta.Tipo));
                    cmd.Parameters.Add(new SqlParameter("@masa", objPlaneta.Masa));
                    cmd.Parameters.Add(new SqlParameter("@temperatura_media", objPlaneta.TemperaturaMedia));
                    cmd.Parameters.Add(new SqlParameter("@duracion_dia", objPlaneta.DuracionDia));
                    cmd.Parameters.Add(new SqlParameter("@distancia_sol", objPlaneta.DistanciaMediaDelSol));
                    cmd.Parameters.Add(new SqlParameter("@duracion_ano", objPlaneta.DuracionAno));

                    DataSet ds = DBAccess.ExecuteSPWithDS(ref cmd, "pa_agregar_planeta");

                }
                catch (Exception ex)
                {

                }

            }

            private void UpdatePlaneta(Planeta objPlaneta)
            {
            }











     




    }
}
